<?php if (!defined('BASEPATH'))exit('No direct script access allowed');

class Nilai_siswa extends CI_Controller
{
    
    function __construct() {
        parent::__construct();
    }
    
    public function index()
    {
        $data['select_tahun'] = $this->db->from('tahun')->order_by('id_tahun', 'ASC')->get();
        $data['id_tahun'] = $this->db->select('id_tahun')->from('tahun')->where('tahun_aktif', '1')->get()->row()->id_tahun;
        $this->template->admin('admin/v_nilai', $data, 4, 'Nilai Siswa');
        
    }
    
    public function kelas()
    {
            $id_tahun = $this->encrypt->decode($this->input->post('id_tahun'));
            $id_kelas = $this->encrypt->decode($this->input->post('id_kelas'));
            if($id_tahun != "")
            {
                    $r_kelas = $this->db->select('k.id_kelas, k.nama_kelas, COUNT(sk.id_siswa) as jumlah_siswa')
                                                            ->from('data_kelas k')
                                                            ->join('siswa_kelas sk','k.id_kelas=sk.id_kelas', 'LEFT')
                                                            ->where('k.id_tahun', $id_tahun)
                                                            ->group_by('k.id_kelas')
                                                            ->order_by('k.nama_kelas', 'ASC')
                                                            ->get();
                    if($r_kelas->num_rows() > 0)
                    {
                            echo '<select id="id_kelas" name="id_kelas" class="uniformselect2">';
                            foreach($r_kelas->result() as $v_kelas)
                            {
                                $cek = '';
                                if($v_kelas->id_kelas == $id_kelas) $cek = 'selected';
                                echo '<option value="'.$this->encrypt->encode($v_kelas->id_kelas).'" '.$cek.'>'.$v_kelas->nama_kelas.' ('.$v_kelas->jumlah_siswa.' siswa)</option>';
                            }
                            echo '</select>';
                            ?>
                            <script>
    jQuery(document).ready(function() {
	jQuery('#id_kelas').change(function(eve) {
            eve.preventDefault();

            jQuery.ajax({
                url: "<?php echo site_url("admin/nilai_siswa/mapel") ?>",
                type: "POST",
                dataType: "html",
                data: {'id_tahun' : jQuery('#kelas_id_tahun').val(),
                    'id_kelas' : jQuery('#id_kelas').val()
                },
                error: function()
                {
                    jQuery('#tempat_mapel').html('<select id="id_mapel" name="id_mapel" class="uniformselect"><option value="">-data tidak ditemukan-</option></select>');
                },
                success: function(html) {
                    jQuery('#tempat_mapel').html(html);
                }
            });
        });
    });
</script>
<?php
                    }
                    else
                    {
                            echo '<select id="id_kelas" name="id_kelas" class="uniformselect2">';
                            echo '<option value="">-data tidak ditemukan-</option>';
                            echo '</select>';
                    }
                    echo '<script>if(jQuery().uniform)jQuery(\'select.uniformselect2\').uniform();jQuery("#id_kelas").change();</script>';
            }
            else show_404();
    }
    
    public function mapel()
    {
        $id_tahun = $this->encrypt->decode($this->input->post('id_tahun'));
        $id_kelas = $this->encrypt->decode($this->input->post('id_kelas'));
//        $id_tahun = 3;
//        $id_kelas = 1;
        if($id_tahun != '' && $id_kelas != '')
        {
            $r_mapel = $this->db->query('SELECT mp.id AS id_mapel, tp.nama_pelajaran, dg.nama_guru FROM jadwal_pelajaran jp
INNER JOIN mata_pelajaran mp ON(mp.id=jp.id_mapel)
INNER JOIN tabel_pelajaran tp ON(tp.kode_pelajaran=mp.kode_pelajaran)
INNER JOIN data_guru dg ON(dg.id=mp.kode_guru)
WHERE jp.id_kelas = '.$id_kelas.'
AND jp.id_tahun = '.$id_tahun.'
GROUP BY mp.id
ORDER BY tp.nama_pelajaran ASC');
            if($r_mapel->num_rows() > 0)
            {
                echo '<select id="id_mapel" name="id_mapel" class="uniformselect3">';
                foreach($r_mapel->result() as $v_mapel)
                {
                    echo '<option value="'.$this->encrypt->encode($v_mapel->id_mapel).'">'.$v_mapel->nama_pelajaran.' - '.$v_mapel->nama_guru.'</option>';
                }
                echo '</select>';
            }
            else
            {
                    echo '<select id="id_mapel" name="id_mapel" class="uniformselect3">';
                    echo '<option value="">-data tidak ditemukan-</option>';
                    echo '</select>';
            }
            echo '<script>if(jQuery().uniform)jQuery(\'select.uniformselect3\').uniform();';
        }
        else 
        {
//            echo $id_kelas;
            show_404();
        }
        
    }
    
    public function download_format()
    {
        $id_tahun = $this->encrypt->decode($this->input->get('id_tahun'));
        $id_kelas = $this->encrypt->decode($this->input->get('id_kelas'));
        $id_mapel = $this->encrypt->decode($this->input->get('id_mapel'));
        if($id_tahun != '' && $id_kelas != '' && $id_mapel != '')
        {
            $data['r_mapel'] = $this->db->query('SELECT jp.id_tahun, mp.id AS id_mapel, tp.nama_pelajaran, dk.id_kelas, dk.nama_kelas, t.tahun_angkatan, ds.id AS id_siswa, ds.nomor_induk, ds.nama_siswa, mp.nilai_min, dn.tugas, dn.kuis, dn.uts, dn.uas FROM jadwal_pelajaran jp
    INNER JOIN mata_pelajaran mp ON(mp.id=jp.id_mapel)
    INNER JOIN tabel_pelajaran tp ON(tp.kode_pelajaran=mp.kode_pelajaran)
    INNER JOIN data_kelas dk ON(dk.id_kelas=jp.id_kelas)
    INNER JOIN siswa_kelas sk ON(sk.id_kelas=dk.id_kelas)
    INNER JOIN data_siswa ds ON(ds.id=sk.id_siswa)
    INNER JOIN tahun t ON(t.id_tahun=jp.id_tahun)
    LEFT JOIN data_nilai dn ON(dn.kode_mapel=mp.id AND dn.id_siswa=ds.id)
    WHERE jp.id_kelas = '.$id_kelas.'
    AND mp.id = '.$id_mapel.'
    AND jp.id_tahun = '.$id_tahun.'
    ORDER BY ds.nomor_induk ASC');
            if($data['r_mapel']->num_rows() > 0)
            {
        $file = 'Format Nilai '.$data['r_mapel']->row()->nama_pelajaran.' Kelas '.$data['r_mapel']->row()->nama_kelas.' T.A '.$data['r_mapel']->row()->tahun_angkatan;
        $file .= '.xls';
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header("Content-Disposition: attachment; filename=".$file);
//        header("Content-Transfer-Encoding: binary");
//        header("Pragma: public");
//        header("Expires: 0");
        header('Cache-Control: max-age=0');
        
        $this->load->view('home/f_nilai_siswa', $data);
            }
        }
        else
        {
            show_404();
        }    
    }
    
    public function upload_nilai()
    {
        $this->load->library('excel_reader');
        $data = new excel_reader($_FILES['file_excel']['tmp_name']);
        
        $baris = $data->rowcount($sheet_index=0);
        $kode_tahun = $data->val(1, 3);
        $kode_mapel = $data->val(2, 3);
        $kode_kelas = $data->val(3, 3);
        
        $r_nilai = $this->db->query('SELECT dn.id, dn.id_tahun, dn.kode_mapel, dn.id_siswa FROM jadwal_pelajaran jp
    INNER JOIN mata_pelajaran mp ON(mp.id=jp.id_mapel)
    INNER JOIN tabel_pelajaran tp ON(tp.kode_pelajaran=mp.kode_pelajaran)
    INNER JOIN data_kelas dk ON(dk.id_kelas=jp.id_kelas)
    INNER JOIN siswa_kelas sk ON(sk.id_kelas=dk.id_kelas)
    INNER JOIN data_siswa ds ON(ds.id=sk.id_siswa)
    INNER JOIN tahun t ON(t.id_tahun=jp.id_tahun)
    INNER JOIN data_nilai dn ON(dn.kode_mapel=mp.id AND dn.id_siswa=ds.id)
    WHERE jp.id_kelas = '.$kode_kelas.'
    AND mp.id = '.$kode_mapel.'
    AND jp.id_tahun = '.$kode_tahun.'
    ORDER BY ds.nomor_induk ASC');
        
        $j = 0;
        $data_tambah = array();
        $data_update = array();
        $ju = 0;
        for ($i=8; $i<=$baris; $i++)
        {
            $id_siswa = $data->val($i, 2);
            $tugas = $data->val($i, 6);
            $kuis = $data->val($i, 7);
            $uts = $data->val($i, 8);
            $uas = $data->val($i, 9);
            
            if($tugas == "") $tugas = 0;
            if($kuis == "") $kuis = 0;
            if($uts == "") $uts = 0;
            if($uas == "") $uas = 0;
            
            $tambah = true;
            if($r_nilai->num_rows() > 0)
            {
                foreach ($r_nilai->result() as $v_nilai)
                {
                    if($v_nilai->id_tahun == $kode_tahun && $v_nilai->kode_mapel == $kode_mapel && $v_nilai->id_siswa == $id_siswa)
                    {
                        $data_update[$ju] = array(
                            'id' => $v_nilai->id,
                            'tugas' => $tugas,
                            'kuis' => $kuis,
                            'uts' => $uts,
                            'uas' => $uas
                        );
                        $ju++;
                        $tambah = false;
                    }
                }
            }
            if($tambah == true)
            {
                if(!($tugas == 0 && $kuis == 0 && $uts == 0 && $uas == 0))
                {
                    $data_tambah[$j] = array(
                        'id_tahun' => $kode_tahun,
                        'kode_mapel' => $kode_mapel,
                        'id_siswa' => $id_siswa,
                        'tugas' => $tugas,
                        'kuis' => $kuis,
                        'uts' => $uts,
                        'uas' => $uas
                    );
                    $j++;
                }
            }
        }
        if(count($data_tambah) > 0)
            $this->db->insert_batch ('data_nilai', $data_tambah);
        if(count($data_update) > 0)
            $this->db->update_batch('data_nilai', $data_update, 'id');
        
        redirect('admin/nilai_siswa');
    }
    
    
public function run_import(){
    $file   = explode('.',$_FILES['file_excel']['name']);
    $length = count($file);
    if($file[$length -1] == 'xlsx' || $file[$length -1] == 'xls'){//jagain barangkali uploadnya selain file excel <img src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" alt=":-)" class="wp-smiley"> 
        $tmp    = $_FILES['file_excel']['tmp_name'];//Baca dari tmp folder jadi file ga perlu jadi sampah di server :-p
        $this->load->library('excel');//Load library excelnya
        $read   = PHPExcel_IOFactory::createReaderForFile($tmp);
        $read->setReadDataOnly(true);
        $excel  = $read->load($tmp);
        $sheets = $read->listWorksheetNames($tmp);//baca semua sheet yang ada
        foreach($sheets as $sheet){
//            echo $sheet
//            if($this->db->table_exists($sheet)){//check sheet-nya itu nama table ape bukan, kalo bukan buang aja... nyampah doank :-p
                $_sheet = $excel->setActiveSheetIndexByName($sheet);//Kunci sheetnye biar kagak lepas :-p
                $maxRow = $_sheet->getHighestRow();
                $maxCol = $_sheet->getHighestColumn();
                $field  = array();
                $sql    = array();
                echo $maxCol;
                $maxCol = range('A',$maxCol);
                foreach($maxCol as $key => $coloumn){
                    $field[$key]    = $_sheet->getCell($coloumn.'1')->getCalculatedValue();//Kolom pertama sebagai field list pada table
                }
                for($i = 2; $i <= $maxRow; $i++){
                    foreach($maxCol as $k => $coloumn){
                        $sql[$field[$k]]  = $_sheet->getCell($coloumn.$i)->getCalculatedValue();
                    }
                    echo $maxRow;
//                    $this->db->insert($sheet,$sql);//ribet banget tinggal insert doank...
//                }
            }
        }
    }else{
        exit('do not allowed to upload');//pesan error tipe file tidak tepat
    }
//    redirect('home');//redirect after success
}
}

/* End of file nilai_siswa.php */
/* Location: ./application/controllers/admin/nilai_siswa.php */